--- title: "06-MySQL 数据库管理" created: 2026-01-07 tags: - 项目筑基 --- # MySQL 数据库管理 ## **第六章:MySQL 数据库与表的管理** ### **6.1 管理方法概述** #### **6.1.1 图形化工具** | **工具名称** | **特点** | | --- | --- | | **MySQL Workbench** | 官方免费工具,功能全面 | | **Navicat** | 商业软件,界面友好 | | **phpMyAdmin** | 基于Web的免费工具 | | **DBeaver** | 开源,支持多种数据库 | | **DataGrip** | JetBrains出品,功能强大 | ![[image-549975d9.png]] #### **6.1.2 命令行工具** ```bash # 连接 MySQL mysql -u root -p # 连接到指定数据库 mysql -u root -p 数据库名 ``` ![[image-5fcfa3f0.png]] ### **6.2 SQL语言分类** ![[image-fb81139b.png]] | **类型** | **全称** | **作用** | **主要语句** | | --- | --- | --- | --- | | **DQL** | Data Query Language | 按条件检索数据 | SELECT | | **DDL** | Data Definition Language | 定义数据库结构 | CREATE、ALTER、DROP、TRUNCATE | | **DML** | Data Manipulation Language | 增删改数据 | INSERT、UPDATE、DELETE | | **DCL** | Data Control Language | 权限控制、事务管理 | GRANT、REVOKE、COMMIT、ROLLBACK | ### **6.3 MySQL 与 SQL Server 的主要区别** | **对比项** | **SQL Server** | **MySQL** | | --- | --- | --- | | **扩展语言** | T-SQL | 标准SQL + 扩展 | | **管理工具** | SSMS | MySQL Workbench | | **文件结构** | .mdf/.ndf/.ldf | 目录 + .ibd文件 | | **文件组** | 支持 | 不支持 | | **存储引擎** | 单一 | InnoDB/MyISAM等 | | **标识列** | IDENTITY | AUTO\_INCREMENT | | **字符串连接** | + | CONCAT() | ![[image-3fcd5b91.png]] ### **6.4 MySQL 存储架构** ![[image-efe66106.png]] > ***注意**:MySQL 不像 SQL Server 那样需要手动管理数据文件,文件管理由存储引擎自动完成。* ### **6.5 数据库的创建** #### **6.5.1 最简单的创建方式** ```sql CREATE DATABASE 学生管理; ``` #### **6.5.2 指定字符集创建** ```sql CREATE DATABASE 学生管理 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` **字符集说明:** | **字符集/排序规则** | **说明** | | --- | --- | | **utf8mb4** | 完整的UTF-8编码,支持emoji表情 | | **utf8** | MySQL的UTF-8子集,最多3字节(不推荐) | | **utf8mb4\_unicode\_ci** | 不区分大小写的排序规则 | | **utf8mb4\_general\_ci** | 更快但不够精确的排序 | | **utf8mb4\_bin** | 二进制比较,区分大小写 | #### **6.5.3 完整语法** ```sql CREATE DATABASE 复习1 DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci; ``` #### **6.5.4 检查数据库是否存在** ```sql -- 如果已存在则不创建(避免报错) CREATE DATABASE IF NOT EXISTS 学生管理 CHARACTER SET utf8mb4; ``` #### **6.5.5 查看已创建的数据库** ```sql -- 查看所有数据库 SHOW DATABASES; -- 查看某个数据库的创建语句 SHOW CREATE DATABASE 学生管理; ``` #### **6.5.6 创建数据库注意事项** | **注意点** | **说明** | | --- | --- | | ✓ 数据库名不能重复 | 同一服务器上数据库名唯一 | | ✓ 建议使用 utf8mb4 字符集 | 支持中文和emoji | | ✓ 数据库名建议使用小写 | Linux系统区分大小写 | | ✓ 避免使用 MySQL 保留字 | 如 order、select 等 | | ✓ 如必须使用特殊字符 | 用反引号 ` 包围 | ```sql -- 使用反引号处理特殊名称 CREATE DATABASE `order`; -- order是保留字 CREATE DATABASE `my-database`; -- 包含连字符 ``` ### **6.6 数据库的修改** #### **6.6.1 修改字符集** ```sql ALTER DATABASE 学生管理 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` #### **6.6.2 修改数据库名称** > ⚠️ **重要提示**:MySQL 没有直接重命名数据库的命令! **方法:导出再导入** ```bash # 步骤1:导出旧数据库 mysqldump -u root -p 旧数据库名 > backup.sql # 步骤2:创建新数据库 mysql -u root -p -e "CREATE DATABASE 新数据库名" # 步骤3:导入到新数据库 mysql -u root -p 新数据库名 < backup.sql # 步骤4:删除旧数据库 mysql -u root -p -e "DROP DATABASE 旧数据库名" ``` ### **6.7 数据库的删除** #### **6.7.1 删除单个数据库** ```sql DROP DATABASE 学生管理; ``` #### **6.7.2 安全删除(存在才删除)** ```sql DROP DATABASE IF EXISTS 学生管理; ``` #### **6.7.3 批量删除** ```sql -- MySQL 不支持一条语句删除多个数据库,需要分开写 DROP DATABASE IF EXISTS 数据库1; DROP DATABASE IF EXISTS 数据库2; DROP DATABASE IF EXISTS 数据库3; ``` #### **6.7.4 删除前确认** ```sql -- 查看数据库中的表 USE 学生管理; SHOW TABLES; -- 确认后再删除 DROP DATABASE 学生管理; ``` > ⚠️ **警告**:`DROP DATABASE` 会永久删除: > > - 数据库中的所有表 > - 表中的所有数据 > - 所有视图、存储过程等对象 > > **此操作不可恢复!请先备份重要数据!** --- ⬅️ [[05-逻辑设计与实施维护|逻辑设计与实施维护]] 🏠 [[00-数据库|00-数据库]] ➡️ [[07-数据表的创建与完整性约束|数据表的创建与完整性约束]]